﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProDivingAdmin2salmon14
{
    public delegate void DelegateNextDive();
    public delegate void DelegateDQDiver(Diver diver);
    public delegate Diver DelegateGetNextDiver();
    public delegate Diver DelegatGetCurrentDiver();
    public delegate DiverList DelegateGetDiverList();
    public delegate int DelegateGetCurrentDive();
    public delegate int DelegateGetAmountOfJudges();
    public delegate List<Judge> DelegateGetConnectedJudgeList();
    public delegate List<DisplayDive> DelegateGetDiverOrder();
    public delegate bool DelegateGetIsNextDive();
    public delegate bool DelegateGetIsDone();
    public delegate int DelegateGetDiveOrderCounter();
    public delegate void DelegateDiveOrderCounterIncrement();

    public delegate void DelegateSendDive(string diveCode);

    public delegate void DelegateCalculateScore(Diver diver);
    public delegate void DelegateCalculateAllDivers();

    public delegate void DelegateResetData(bool female, int minAge, int divingHeight, int judges, string diversPath, string judgesPath);

    public delegate bool DelegateGetIsFemaleData();
    public delegate int DelegateGetMinAge();
    public delegate int DelegateGetDivingHeight();
    public delegate int DelegateGetJudges();
    public delegate string DelegateGetDiversPath();
    public delegate string DelegateGetJudgesPath();

    public delegate void DelegateSaveContest(string filePath, Contest contest);
    public delegate Contest DelegateGetContest();
    public delegate Contest DelegateLoadContest(string filePath);
    public delegate void DelegateSetContest(Contest contest);

    public delegate void DelegateGetJugeIDs(string[] ids);
    public delegate void DelegateBroadcastIP();


    public interface IFormMain
    {
        event DelegateNextDive EventNextDive;
        event DelegateDQDiver EventDQDiver;
        event DelegateGetNextDiver EventGetNextDiver;
        event DelegatGetCurrentDiver EventGetCurrentDiver;
        event DelegateGetDiverList EventGetDiverList;
        event DelegateGetCurrentDive EventGetCurrentDive;
        event DelegateGetAmountOfJudges EventGetAmountOfJudges;
        event DelegateGetConnectedJudgeList EventGetConnectedJudgeList;
        event DelegateGetDiverOrder EventGetDiverOrder;
        event DelegateGetIsNextDive EventGetIsNextDive;
        event DelegateGetIsDone EventGetIsDone;
        event DelegateGetDiveOrderCounter EventGetDiveOrderCounter;
        event DelegateDiveOrderCounterIncrement EventDiveOrderCounterIncrement;
        

        event DelegateSendDive EventSendDive;

        event DelegateCalculateScore EventCalculateScore;
        event DelegateCalculateAllDivers EventCalculateAllDivers;

        event DelegateResetData EventResetData;

        event DelegateGetIsFemaleData EventGetIsFemaleData;
        event DelegateGetMinAge EventGetMinAge;
        event DelegateGetDivingHeight EventGetDivingHeight;
        event DelegateGetJudges EventGetJudges;
        event DelegateGetDiversPath EventGetDiversPath;
        event DelegateGetJudgesPath EventGetJudgesPath;

        event DelegateSaveContest EventSaveContest;
        event DelegateGetContest EventGetContest;
        event DelegateLoadContest EventLoadContest;
        event DelegateSetContest EventSetContest;

        event DelegateBroadcastIP EventBroadcastIP;

        event DelegateGetJugeIDs EventGetJudgeIDs;

    }
}
